Server-side Validation এবং Error Handling গাইড ও নোট

Web Development - মিনজেএস (MeanJS) - Form Validation এবং Error Handling
236

MeanJS স্ট্যাক, যা MongoDB, Express.js, AngularJS, এবং Node.js এর সমন্বয়ে তৈরি, এটি ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। যখন আমরা অ্যাপ্লিকেশন তৈরি করি, তখন server-side validation এবং error handling অত্যন্ত গুরুত্বপূর্ণ বিষয়। Server-side validation নিশ্চিত করে যে কেবল বৈধ ডেটাই ডেটাবেসে জমা হবে, এবং error handling সার্ভারে যে কোনো ত্রুটি সঠিকভাবে পরিচালনা করতে সাহায্য করে, ব্যবহারকারীদের জন্য পরিষ্কার এবং বোধগম্য মেসেজ প্রদান করে।


১. Server-side Validation

Server-side validation হল এমন একটি প্রক্রিয়া, যেখানে সার্ভার ব্যবহারকারীর ইনপুট ডেটা যাচাই করে, এটি নিশ্চিত করে যে এটি সঠিক ফরম্যাটে রয়েছে এবং এটি ডেটাবেসে সেভ করা যেতে পারে।

Server-side Validation এর জন্য Mongoose এর ব্যবহার

Mongoose হল MongoDB এর জন্য একটি ODM (Object Document Mapping) লাইব্রেরি যা MongoDB ডেটাবেসের সাথে যোগাযোগ সহজ করে। Mongoose এর validation ফিচার ব্যবহার করে আমরা ইনপুট ডেটার বৈধতা পরীক্ষা করতে পারি।

Mongoose Validation উদাহরণ:
// models/user.model.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

// ইউজার স্কিমা তৈরি করা
const userSchema = new Schema({
  name: {
    type: String,
    required: [true, 'Name is required'],  // নামের জন্য বাধ্যতামূলক
    minlength: [3, 'Name must be at least 3 characters long']  // নামের দৈর্ঘ্য চেক করা
  },
  email: {
    type: String,
    required: [true, 'Email is required'],
    unique: true,  // ইমেইল ইউনিক হতে হবে
    match: [/^\S+@\S+\.\S+$/, 'Please enter a valid email address']  // ইমেইল ফরম্যাট যাচাই
  },
  password: {
    type: String,
    required: [true, 'Password is required'],
    minlength: [6, 'Password must be at least 6 characters long']  // পাসওয়ার্ডের দৈর্ঘ্য চেক করা
  }
});

// ইউজার মডেল তৈরি করা
const User = mongoose.model('User', userSchema);
module.exports = User;

এখানে:

  • name, email, এবং password ফিল্ডের জন্য বৈধতা যাচাই করা হয়েছে।
  • required প্রপার্টি নিশ্চিত করে যে ফিল্ডটি খালি থাকলে একটি ত্রুটি বার্তা পাঠানো হবে।
  • minlength এবং match প্রপার্টি পাসওয়ার্ড এবং ইমেইলের ফরম্যাট চেক করবে।

ব্যবহারকারী তৈরি (Create User) ফাংশনে Validation:

// controllers/user.controller.js

const User = require('../models/user.model');

exports.createUser = async (req, res) => {
  try {
    const user = new User(req.body);  // ইউজার ইনপুট ডেটা গ্রহণ করা
    await user.save();  // মডেল থেকে ডেটা সেভ করা
    res.status(201).json(user);  // সফল হলে ইউজারের তথ্য রিটার্ন করা
  } catch (err) {
    if (err.name === 'ValidationError') {
      return res.status(400).json({
        message: 'Validation failed',
        errors: err.errors  // বৈধতা ত্রুটি বার্তা পাঠানো
      });
    }
    res.status(500).json({ message: 'Server error' });  // অন্যান্য ত্রুটির জন্য
  }
};

এখানে, try-catch ব্লক ব্যবহার করা হয়েছে, যাতে validation error বা অন্য কোনো ত্রুটি হলে তা যথাযথভাবে হ্যান্ডেল করা যায় এবং সঠিক HTTP স্ট্যাটাস কোড সহ ত্রুটি বার্তা ফেরত পাঠানো হয়।


২. Error Handling

Error handling হল এমন একটি প্রক্রিয়া যেখানে আমরা অ্যাপ্লিকেশন বা সার্ভারের যেকোনো ত্রুটিকে সঠিকভাবে শনাক্ত করি এবং তার সঠিক প্রতিক্রিয়া (response) ব্যবহারকারীকে প্রদান করি। MeanJS অ্যাপ্লিকেশনে, আমরা সাধারণত Express.js এবং Node.js ব্যবহার করে ত্রুটিগুলোর মোকাবিলা করি।

২.১. Error Handling Middleware

Express.js তে একটি সাধারণ error-handling middleware তৈরি করা যায়, যা সার্ভারে ঘটে যাওয়া সব ধরনের ত্রুটির জন্য কাজ করবে। এটি এমন একটি সাধারণ পদ্ধতি যা ব্যবহার করে ত্রুটির সঠিক বার্তা এবং HTTP কোড ফেরত পাঠানো হয়।

Error Handling Middleware উদাহরণ:
// server/middleware/error.middleware.js

module.exports = function (err, req, res, next) {
  console.error(err.stack);  // ত্রুটি লগ করা

  // যদি এটি validation error হয়
  if (err.name === 'ValidationError') {
    return res.status(400).json({
      message: 'Validation failed',
      errors: err.errors
    });
  }

  // যদি এটি সাধারণ কোনো সার্ভার সাইড ত্রুটি হয়
  res.status(500).json({
    message: 'Something went wrong, please try again later',
    error: err.message
  });
};

এখানে, error.middleware.js একটি সাধারণ error-handling middleware তৈরি করেছে যা ত্রুটি লগ করবে এবং যথাযথ HTTP স্ট্যাটাস কোড সহ ত্রুটি বার্তা প্রদান করবে।

২.২. ব্যবহারকারী থেকে আসা রিকুয়েস্টে ত্রুটি হ্যান্ডলিং

// controllers/user.controller.js

exports.getUser = async (req, res, next) => {
  try {
    const user = await User.findById(req.params.id);
    if (!user) {
      return res.status(404).json({ message: 'User not found' });  // যদি ইউজার না পাওয়া যায়
    }
    res.json(user);
  } catch (err) {
    next(err);  // অন্য সব ত্রুটি middleware এ পাঠানো
  }
};

এখানে next(err) ব্যবহার করে ত্রুটিটি error-handling middleware এ পাঠানো হয়েছে। এটি ব্যবহৃত হয় যখন try-catch ব্লকের মধ্যে কোনো ত্রুটি ঘটলে তা পরবর্তী পর্যায়ে সরাসরি হ্যান্ডল করা হয়।


৩. Validation এবং Error Handling এর সারাংশ

  1. Server-side validation নিশ্চিত করে যে ব্যবহারকারী যে ডেটা পাঠাচ্ছে তা বৈধ এবং সঠিক ফরম্যাটে রয়েছে। এর মাধ্যমে আমরা ভুল ডেটা ডেটাবেসে সংরক্ষণ থেকে বিরত রাখতে পারি।
  2. Error handling নিশ্চিত করে যে সার্ভারে ঘটে যাওয়া সব ধরনের ত্রুটির সঠিক বার্তা ব্যবহারকারীকে দেওয়া হয়। এতে ব্যবহারকারী পরিষ্কার ত্রুটি বার্তা পায় এবং উন্নত UX প্রদান করা হয়।

MeanJS তে Mongoose ব্যবহার করে ডেটা validation এবং Express.js তে error-handling middleware ব্যবহার করে সহজেই এ দুই প্রক্রিয়া কার্যকরভাবে পরিচালনা করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...